import os
import json
from pathlib import Path
import shutil
import glob
from pojo.File import File


def get_files_name_list_获取当前目录下的文件名列表(hz_后缀, folder_path="."):
    # 拼接搜索模式，folder_path 和 后缀
    pattern = os.path.join(folder_path, f"*{hz_后缀}")

    # 获取符合后缀条件的文件
    files = glob.glob(pattern)

    # 仅返回文件名
    return [os.path.basename(file) for file in files]
    # xlsx_files = []
    # # 遍历指定目录
    # for root, dirs, files in os.walk(folder_path):
    #     # print(files)
    #     for file in files:
    #         # 检查文件扩展名是否为 .xlsx
    #         if file.endswith(hz_后缀):
    #             # 获取文件的绝对路径并添加到列表
    #             # xlsx_files.append(os.path.join(root, file))
    #             xlsx_files.append(file)
    # return list(set(xlsx_files))


def hqgml_获取当前程序的根目录():

    # 获取当前文件的路径
    current_file = Path(__file__)

    # 获取项目根目录（假设根目录是当前脚本所在文件夹的上级目录）
    project_root = str(current_file.parent.parent.resolve())
    return project_root


def scwj_删除文件(file_name, folder_path):
    file_path = f"{folder_path}/{file_name}"
    if os.path.exists(file_path):
        os.remove(file_path)
        return True
    return False


def pdwjsfcz_判断文件是否存在(path):
    return os.path.exists(path)


def scwjj_删除文件夹(folder_path):
    # 检查文件夹是否存在
    if os.path.exists(folder_path):
        # 删除文件夹及其内容
        shutil.rmtree(folder_path)


def cjwjj_创建文件夹(folder_path):
    if not os.path.exists(folder_path) and not os.path.isdir(folder_path):
        os.makedirs(folder_path, exist_ok=True)


def dqjson_读取json文件(file: File):
    if not os.path.exists(file.get_file_path()):
        return None
    # 读取 JSON 文件
    with open(file.get_file_path(), "r", encoding="utf-8") as file:
        data = json.load(file)
    return data


def xrjson_写入json文件(set1: set, file: File):
    # with open(file.get_file_path(), "w", encoding="utf-8") as file:
    # json.dump(set1, file)
    with open(file.get_file_path(), "w", encoding="utf-8") as file:
        json.dump(set1, file, ensure_ascii=False, indent=4)


def tqwjm_提取文件名(file_path):
    file_name = os.path.basename(file_path)
    return file_name


def tqwjmqz_提取文件前缀(file_name):
    name_without_extension = os.path.splitext(file_name)[0]
    return name_without_extension


def gjwjmqztqwjm_根据文件名前缀提取文件名(file_qz: str, folder_path: str):
    # 获取文件夹下的文件列表
    file_list = os.listdir(folder_path)
    # 只保留文件（去掉文件夹）
    file_list = [f for f in file_list if os.path.isfile(os.path.join(folder_path, f))]
    for file_name in file_list:
        if file_qz in file_name:
            # file_suffix = os.path.splitext(f"{folder_path}/{file_name}")
            # print(file_suffix)
            return file_name
    # file_path = file_path + "/" + file_qz
    # return file_suffix[1]


# def gjwjmqzscwj_根据文件名前缀删除文件(file_qz: str, folder_path: str):
def gjwjmqzscwj_根据文件名前缀删除文件(file: File):
    # 获取文件夹下的文件列表
    file_list = os.listdir(file.folder_path)
    # 只保留文件（去掉文件夹）
    file_list = [
        f for f in file_list if os.path.isfile(os.path.join(file.folder_path, f))
    ]
    for file_name in file_list:
        if file.get_qz_获取文件名前缀() in file_name:
            scwj_删除文件(file_name=file_name, folder_path=file.folder_path)


def gjwjmqzscwj_根据文件名前缀获取文件(file: File):
    # 获取文件夹下的文件列表
    file_list = os.listdir(file.folder_path)
    # 只保留文件（去掉文件夹）
    file_list = [
        f for f in file_list if os.path.isfile(os.path.join(file.folder_path, f))
    ]
    for file_name in file_list:
        if file.get_qz_获取文件名前缀() in file_name:
            file_out = File(
                folder_path=file.folder_path,
                file_name=file_name,
                file_qz=file.get_qz_获取文件名前缀(),
            )
            return file_out
    return None


def dqmllb_读取目录列表(pcml_排除目录=[], folder_path="."):
    subdirs = [
        name
        for name in os.listdir(folder_path)
        if os.path.isdir(os.path.join(folder_path, name))
    ]
    subdirs = [item for item in subdirs if item not in pcml_排除目录]
    return subdirs
